package com.teangtang.fly.entity;

import com.fasterxml.jackson.annotation.JsonManagedReference;
import lombok.Data;
import javax.persistence.*;
import java.util.Date;
import java.util.List;

@Entity
@Data
public class Traveller {
    @Id
    private String idCard;//身份证号码，唯一标识用户身份，不可重复
    private String username;//用户名，用户自己设置（可重复/不可重复）
    private String password;//

    private String idCardType;
    private String phone;//可用手机号登录，手机号验证码登录，手机号+验证码注册但是注册完仍需要实名验证
    //采用身份证+手机号双重验证

    private String email;//也可以作为一种注册或登录的方式，但是优先实现手机验证和实名，最后考虑邮箱功能
    //以下为用户基础信息，但是实名验证需要企业才能申请，就不能直接从身份证获取了，前端注册时需要填写
    private String address;
    private String name;
    private String gender;
    private Date birthDate;
    //其他身份信息，以下内容暂时无法实现，搞不到护照库接口，可以搞个模拟验证，只验证格式，不验证真实性
    //以下内容在时间充足的情况下考虑实现，不实现的话删除这部分内容
    private String nationality;//歪果仁也要坐飞机
    private String passportNumber;//护照，（需要申请护照库接口，获取不到，不用管）
    private String passportExpiryDate;//同上
    private String visaExpiryDate;//签证有效期，同上
    //紧急联系人信息，用于紧急情况下联系乘客，（必填/非必填）以下内容在时间充足的情况下考虑实现，不实现的话删除这部分内容
    private String emergencyContactName;//紧急联系人姓名
    private String emergencyContactPhone;//紧急联系人手机号
    private String emergencyContactRelationship;//紧急联系人关系
    //账号相关
    private String profilePictureUrl;//用户头像存储路径
    private String status;//用户状态，正常/冻结/注销

    @OneToMany(mappedBy = "traveller")
    @JsonManagedReference
    private List<Ticket> Tickets;

    @OneToMany(mappedBy = "traveller")
    @JsonManagedReference
    private List<MyOrder> MyOrders;
}